package cl.mt.mvc.action.oferente;

import java.util.Collection;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import cl.mt.dto.DTOPostulacion;
import cl.mt.dto.DTOUsuario;
import cl.mt.dto.DTOVehiculosDisponible;
import cl.mt.dto.filtros.FiltroCargaDTO;
import cl.mt.mvc.helper.VehiculosHelper;

public class VehiculosDisponiblesAction extends Action {
	private Logger log = LogManager.getLogger(VehiculosDisponiblesAction.class.getName());
	
	
	 public ActionForward execute (ActionMapping mapping, ActionForm form,
	          HttpServletRequest request, HttpServletResponse response) {
		 String forward= "ERROR";
		 log.debug("VehiculosDisponiblesAction..........");
		 String isLogin=  request.getSession().getAttribute("LoginOK")=="ok" ? "nok" :(String) request.getSession().getAttribute("LoginOK");
		 log.debug("Login de session en OfertaCargaAction["+isLogin+"] ");
		 String accion= request.getParameter("accion");
		 log.debug("campo accion:["+accion+"]");
		 
		 
		 
		  if ("vehiDisp".equals(accion)){ 
			  String tipoFiltro= request.getParameter("tipoFiltro")==null ? "Vigente" : request.getParameter("tipoFiltro");
 			  
			  DTOUsuario userLogin = (DTOUsuario) request.getSession().getAttribute("userLogin");

			  VehiculosHelper helper = new VehiculosHelper();
			  
			  FiltroCargaDTO filtro = new FiltroCargaDTO(tipoFiltro, userLogin.getId());
			  Collection<DTOVehiculosDisponible> resultado = helper.getVehiculosDisponiblesFiltro(filtro);
			  log.debug("cantidad de vehiculos disponibles["+resultado.size()+"]");
			  
			  request.setAttribute("listDisp", resultado);

			  forward="SUCCESS";
		 
		  }else if ("vehiDispfiltroCarga".equals(accion)){ 
			  log.debug("busca info vehiDispfiltroCarga.");
			  VehiculosHelper helper = new VehiculosHelper();
			  FiltroCargaDTO filtro = buscaParametrosRequest(request);
			  
			  Collection<DTOVehiculosDisponible> resultado = helper.getVehiculosDisponiblesFiltro(filtro);
			  log.debug("cantidad de ofertas["+resultado.size()+"]");
			  
			  request.setAttribute("listDisp", resultado);
			  
			  forward="SUCCESS";
		  
		  
		  }else if ("verVehiDispfiltroCarga".equals(accion)){ 
			  log.debug("busca info verVehiDispfiltroCarga.");
			  VehiculosHelper helper = new VehiculosHelper();
			  String idvd= request.getParameter("idvd"); 
			  String idUserContacto =  request.getParameter("idUserContacto");
			  DTOPostulacion post= helper.getInfoVehiculoDisponible(idvd,idUserContacto );
			  
			  request.setAttribute("detalle", post);
			  request.setAttribute("idOvehiculoDisponible", idvd);
			  
			  forward="DETALLE";
		  
		  
		  }else{
			  
			  log.debug("No hay accion a ejecutar.");
			  forward="SUCCESS";
		  }
			 
		 
		 return mapping.findForward(forward);

	 }

	 
	 
		private FiltroCargaDTO buscaParametrosRequest(HttpServletRequest request) {
			FiltroCargaDTO filtro = new FiltroCargaDTO();
			DTOUsuario user = (DTOUsuario) request.getSession().getAttribute("userLogin");
			filtro.setIdUser(user.getId().hashCode());
			filtro.setTipoFiltro(request.getParameter("tipoFiltro"));
			filtro.setFechaDesde(request.getParameter("fechaDesde"));
			filtro.setFechaHasta(request.getParameter("fechaHasta"));
			filtro.setPaisDestino(request.getParameter("paisDestino"));
			filtro.setPaisOrigen(request.getParameter("paisOrigen"));
			
			filtro.setRegionDestino(request.getParameter("regionDestino"));
			filtro.setRegionOrigen(request.getParameter("regionOrigen"));
			
			filtro.setPaisOrigen(request.getParameter("paisOrigen"));
			filtro.setPaisOrigen(request.getParameter("paisOrigen"));
			filtro.setTipoFiltro(request.getParameter("tipoFiltro"));
			
		log.debug("datos del filtro:"+filtro.toString());
		return filtro;
	}

}
